草庐IT

Java ForkJoinPool - 队列中的任务顺序

全部标签

c# - LINQ to Objects 是否保持其顺序

我有一个List而是想将它们转换为List以进行简单处理,执行以下操作:Listpersons=GetPersonsBySeatOrder();ListseatNames=persons.Select(x=>x.Name).ToList();Console.WriteLine("Firstinline:{0}",seatNames[0]);是.Select()LINQtoObjects对象上的声明保证不更改列表成员的顺序?假设没有添加明确的不同/分组/排序此外,如果任意.Where()先使用子句,是否仍然保证保持相对顺序,还是有时使用非迭代过滤?正如费尔明在上面评论的那样,这本质上是一

c# - CancellationToken.ThrowIfCancellationRequested 后的故障与取消任务状态

通常我不会发布带有答案的问题,但这次我想引起一些人对我认为可能是一个晦涩但普遍的问题的关注。它是由thisquestion触发的,从那以后我检查了我自己的旧代码,发现其中一些也受此影响。下面的代码启动并等待两个任务,task1和task2,它们几乎相同。task1与task2的唯一区别在于它运行一个永无止境的循环。IMO,这两种情况对于一些执行CPU密集型工作的现实场景来说都是非常典型的。usingSystem;usingSystem.Threading;usingSystem.Threading.Tasks;namespaceConsoleApplication{publicclas

c# - 数据集的插入/删除/修改的正确顺序是什么?

TheMSDNclaimsthattheorderis:子表:删除记录。父表:插入、更新和删除记录。子表:插入和更新记录。我对此有疑问。例子:ParentTable有两条记录parent1(Id:1)和parent2(Id:2)ChildTable有一条记录child1(Id:1,ParentId:1)如果我们更新child1以拥有一个新的父parent2,然后我们删除parent1。我们在子表中没有要删除的内容我们删除parent1:我们打破了约束,因为child仍然依附于parent1,除非我们先更新它。那么什么是正确的顺序,MSDN在这个问题上是错误的吗?我个人的想法是子表:删除

c# - 带有 await 的异步 lambda 表达式返回任务?

我有以下代码://Getallofthefilesfromthelocalstoragedirectory.varfiles=awaitfolder.GetFilesAsync();//Mapeachfiletoastreamcorrespondingtothatfile.varstreams=files.Select(asyncf=>{returnawaitf.OpenStreamForWriteAsync();});我希望streams类型为IEnumerable但实际上是IEnumberable>,如果我省略了await关键字,这就是我所期望的。OpenStreamForWrit

c# - 由于静态字段初始化的顺序,如何捕获或标记潜在问题

考虑以下C#代码:usingSystem;classProgram{staticstringstring1="AAA";staticstringstring2=string1+string3;staticstringstring3="BBB";staticvoidMain(){Console.WriteLine(string2);}}我今天早些时候写了一些这样的代码,并期望string2包含值AAABBB,但它只包含AAA。我阅读了一些有关静态变量初始化顺序的资料,但对我来说,编译期间会生成某种类型的警告或错误似乎更可取。两个问题:为什么允许这样的代码编译成功?(如果答案是:“因为C#

c# - 如何(以及是否)使用 TPL 编写单一消费者队列?

我最近听到了很多关于.NET4.0中的TPL的播客。它们中的大多数描述了后台事件,例如下载图像或进行计算,使用任务以使工作不会干扰GUI线程。我处理的大部分代码更多地具有多生产者/单一消费者的风格,其中来自多个来源的工作项必须排队,然后按顺序处理。一个例子是日志记录,其中来自多个线程的日志行被顺序排列到一个队列中,以便最终写入文件或数据库。来自任何单一来源的所有记录必须保持有序,并且来自同一时刻的记录在最终输出中应该彼此“接近”。所以多个线程或任务或任何东西都在调用队列:lock(_queue)//orusealock-freequeue!{_queue.enqueue(some_wo

c# - 单击按钮期间是否可以等待异步任务?

我的应用程序中有一个刷新按钮,它使用一些异步方法来更新显示的项目列表。问题是我不能为按钮单击的事件处理程序返回Task类型,所以我只剩下一个asyncvoid方法。因此,用户可以点击刷新按钮,然后在重新填充列表时选择一个项目,这将导致错误。处理按钮点击的代码开始:privateasyncvoidButton_Click_1(objectsender,RoutedEventArgse){awaitViewModel.CreateMessageCommand();那么有什么方法可以正确地等待这个任务完成吗? 最佳答案 由于控件的事件处理

c# - 如何同步任务?

假设我有一个保存到文件的异步方法:asyncTaskSaveToFileAsync(){varfile=awaitfolder.GetFileAsync(...)varstream=file.OpenFileAsync(...)///etc}现在假设同时调用了两次SaveToFileAsync。这是一个问题,因为您不能同时写入同一个文件如果这是一个常规方法,lock()会解决这个问题:voidSaveToFile(){lock(something){///codehere}}但是,在异步方法中不允许使用锁。当然,可以调用Monitor.Enter()或使用互斥体,但这些对象与线程一起工

c# - 理解调度队列

我想我需要一些帮助来理解DispatcherQueue。当新工作到达时,它会被添加到调度程序队列的开头,而当Dispatcher想要处理工作项时,它会从开头被删除。更一般地说:如果有工作,它将以FIFO方式存储在队列中,并在没有剩余工作时进行处理。MSDN文档here是指loop和frame:Dispatcher在循环中处理工作项队列。循环称为帧。但是在这种情况下循环在哪里?对我来说,循环是指迭代某些东西,当它到达终点时,它会重新开始。frame的概念是什么?根据MSDN文档,一个框架是队列中工作项目的一部分?如果是这样,应该如何使用静态方法Disptatcher.PushFrame(

c# - 对文件夹名称数组进行排序,如 Windows 资源管理器(按数字和字母顺序)- VB.NET

我正在自杀并脱水试图让这个数组排序。我有一个数组,其中包含生成的目录;DimFolders()AsString=Directory.GetDirectories(RootPath)我需要对它们进行排序,使它们看起来像在win7/vista中的Windows资源管理器中。--按文件夹名称的数字和字母顺序。文件夹名称包含字母和数字,有时仅包含字母或仅包含数字。简单的Array.Sort(Folders)结果是C:\inetpub\wwwroot\rootpath\1C:\inetpub\wwwroot\rootpath\10C:\inetpub\wwwroot\rootpath\100C: